Exec Shield
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
Exec Shield는 x86 CPU의 코드 세그먼트 제한을 활용하여 메모리 영역에서 코드 실행을 제한하는 기술이다. 2003년 5월 잉고 몰나르 등에 의해 개발되었으며, 레드햇 배포판 등에 포함되었다. mprotect()를 통해 실행 가능 범위를 넓힐 경우 보호가 무효화될 수 있으며, SELinux와 함께 사용될 경우 실행 파일에 대한 이러한 동작을 금지하는 정책이 적용될 수 있다.
더 읽어볼만한 페이지
- 운영 체제 보안 - NX 비트
NX 비트는 하드웨어 기반 보안 기능으로, 메모리 페이지의 실행 권한을 제어하여 특정 영역에서 코드 실행을 막아 버퍼 오버플로 공격과 같은 보안 위협을 줄이는 데 사용되며, AMD에서 처음 도입 후 다양한 프로세서와 운영체제에서 DEP 등의 이름으로 구현되었다. - 운영 체제 보안 - 슈퍼유저
슈퍼유저는 운영 체제에서 모든 권한을 가진 사용자를 지칭하며, 유닉스 계열에서는 root, 윈도우에서는 관리자 계정이 해당 역할을 수행한다. - 리눅스 - 리누스의 법칙
리누스의 법칙은 오픈 소스 개발에서 많은 개발자가 코드 검토에 참여할수록 버그가 빨리 발견되고 수정된다는 개념을 담고 있지만, 개발 환경에 따라 효과가 달라질 수 있다는 비판도 존재한다. - 리눅스 - 2038년 문제
2038년 문제는 유닉스 시간의 정수 오버플로우로 인해 2038년 1월 19일 이후에 오류가 발생하는 문제이며, 64비트 시스템 전환 등으로 해결하려 한다. - 리눅스 보안 소프트웨어 - GNU 프라이버시 가드
GNU 프라이버시 가드는 붸르너 코흐가 개발한 공개 키 암호 방식 기반의 암호화 소프트웨어로, PGP와 호환되며 OpenPGP 표준을 준수하고 다양한 운영체제에서 사용 가능하다. - 리눅스 보안 소프트웨어 - AppArmor
AppArmor는 리눅스 보안 모듈로, 프로그램의 정상적인 동작을 정의하는 프로필을 통해 비정상적인 행위를 차단하며 SELinux의 대안으로 제시되었으나 보안 취약점, 성능, 설정, 호환성 등에 대한 논란도 있다.
| Exec Shield |
|---|
2. 구현
Exec Shield는 x86 CPU의 코드 세그먼트 제한을 활용하여 동작한다. 이 방식은 매우 가볍지만, 임의의 가상 메모리 배치를 완전히 보호하지는 못한다. 예를 들어, `mprotect()`를 호출하여 실행 가능 범위를 넓힐 경우, 해당 범위 내의 보호는 무효화될 수 있다. 잉고 몰나르는 이메일 대화에서 이 점을 지적했다.[1] 다행히 대부분의 애플리케이션은 이 점에서 상당히 정상적이다. 특히 중요한 부분인 스택은 매핑된 라이브러리 위쪽에 있어 애플리케이션이 명시적으로 호출하지 않는 한 실행 불가능하게 된다.
Exec Shield는 Red Hat의 여러 사람들에 의해 개발되었으며, 최초의 패치는 2003년 5월 Red Hat의 잉고 몰나르에 의해 공개되었다. 이는 페도라 코어 1부터 6까지, 그리고 Red Hat Enterprise Linux 버전 3부터 포함되었다.[1][2][4][5] 야쿱 옐리네크, 울리히 드레퍼, 리처드 헨더슨, 아르얀 반 데 벤 등이 개발에 참여했다.
Exec Shield 프로젝트에서 파생된 다른 기능으로는 Position Independent Executables (PIE)라는 리눅스 커널용 ASLR 패치, glibc 내부의 광범위한 보안 검사, GCC Fortify Source 기능, GCC 스택 프로텍터의 이식 및 병합 등이 있다.
Exec Shield는 코드 세그먼트 제한을 활용하여 모든 x86 CPU에서 동작한다. Exec Shield는 작동 방식 때문에 매우 가볍지만, 임의의 가상 메모리 배치를 완전히 보호할 수는 없다. 예를 들어 mprotect()를 호출하여 더 높은 메모리를 실행 가능하게 만들면 CS 제한 아래에서는 보호되지 않는다. 잉고 몰나르는 이메일에서 이 점을 지적했다.[1] 대부분의 애플리케이션은 이 점에서 상당히 합리적이다. 특히 중요한 스택은 매핑된 라이브러리의 상단 부분이 제거되어 애플리케이션에 의해 명시적으로 호출되지 않는 한 실행 불가능하다.
[1]
웹사이트
Fedora Core 1 Release Notes
http://docs.fedorapr[...]
2003-11-01
2004년 8월 기준으로, Exec Shield 프로젝트에서는 어느 아키텍처에서도 `mprotect()`를 제한하여 메모리 보호를 강화하지 않는다. 비록 메모리가 초기에 실행 가능하지 않을 수 있지만, 추후에 실행 가능해질 수 있으며 커널은 애플리케이션이 메모리 페이지를 쓰기 가능하고 실행 가능하게 마크하게 한다. 그러나 SELinux와 함께 페도라 코어 배포판의 표준 정책은 호환성을 위한 예외를 제외하고 대부분의 실행 파일에 대해 이러한 동작을 금지한다.[2]
3. 역사
몰나르는 2007년 LWN.net에서 "exec-shield의 일부는 상류로 갔지만, 상당 부분은 그렇지 않았다"고 언급했다.[3]
4. 파생 기술
5. 비판 (보안 취약점)
2004년 8월 현재, Exec Shield 프로젝트는 어떤 아키텍처에서도 mprotect() 제한을 통해 메모리 보호를 강제하지 않는다.[2] 메모리가 처음에는 실행 가능하지 않더라도 나중에 실행 가능하게 될 수 있으므로, 커널은 애플리케이션이 메모리 페이지를 쓰기 가능하고 실행 가능하게 표시하도록 허용한다. 그러나 SELinux와 함께 페도라 코어 배포판의 표준 정책은 호환성을 위한 몇 가지 예외를 제외하고 대부분의 실행 파일에서 이 작업을 금지한다.[3]
참조
[2]
웹사이트
New Security Enhancements in Red Hat Enterprise Linux v.3, update 3
http://www.redhat.co[...]
2004-08-01
[3]
웹사이트
time it takes to get a project into the upstream kernel [LWN.net]
https://lwn.net/Arti[...]
[4]
웹사이트
Fedora Core 1 Release Notes
http://docs.fedorapr[...]
2003-11-01
[5]
웹사이트
New Security Enhancements in Red Hat Enterprise Linux v.3, update 3
http://www.redhat.co[...]
2004-08-01
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com